package bancosys.tec.rtm.monitor;

import java.util.Date;

/**
 * Action abstrata que usa template method para garantir que hora de ultima execucao eh atualizada sempre.
 * 
 * @author Marcio Ribeiro (mmr)
 * @created Sep 18, 2006
 */
public abstract class AbstractAction implements Action {

    /** Hora de ultima execucao de action. */
    private Date lastTimeRunned;

    /**
     * Executa action e atualiza hora de ultima execucao.
     */
    public final void runAction() {
        this.doRunAction();
        this.lastTimeRunned = new Date();
    }

    /**
     * Devolve hora de ultima execucao de action.
     * 
     * @return data de ultima execucao de action.
     */
    public Date getLastTimeRunned() {
        return this.lastTimeRunned;
    }

    /**
     * Metodo que deve ser implementado pelos filhos que executa a action de verdade, sera chamado pelo metodo runAction.
     */
    public abstract void doRunAction();
}